package compilers.AST.types;

import compilers.AST.expression.Term;
import compilers.symbolTable.SymbolTableScope;

public abstract class MyType extends Term {
	
	public MyType() {}
	
	public MyType(int lineNr) {
		super(lineNr);
	}
	
	public  abstract int getResultType(SymbolTableScope currentScope);

	public abstract boolean isConstant(SymbolTableScope currentScope);

	public abstract MyType calculateValue(SymbolTableScope currentScope);
	
	public abstract MyType and(MyType type2);
	public abstract MyType or(MyType type2);
	public abstract MyType equalsRel (MyType type2);
	public abstract MyType nequals (MyType type2);
	public abstract MyType less (MyType type2);
	public abstract MyType lessEq (MyType type2);
	public abstract MyType greaterEq (MyType type2);
	public abstract MyType greater (MyType type2);
	public abstract MyType plus (MyType type2);
	public abstract MyType minus (MyType type2);
	public abstract MyType mult (MyType type2);
	public abstract MyType div (MyType type2);
	public abstract MyType mod (MyType type2);
	public abstract MyType negate();
	
	public abstract String valueToString();
	public abstract String toType(int type);





}
